package com.zengjianjun.canal.demo.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author zengjianjun
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CanalListener {

    /**
     * canal服务地址
     * 为空时默认取{@link com.zengjianjun.canal.demo.consumer.CanalConsumerInterface#HOST_NAME}
     *
     * @return canal服务连接地址
     */
    String hostName() default "";

    /**
     * canal服务端口
     * 为-1时默认取{@link com.zengjianjun.canal.demo.consumer.CanalConsumerInterface#PORT}
     *
     * @return 默认：-1
     */
    int port() default -1;

    /**
     * 监听实例
     *
     * @return ""
     */
    String destination();

    /**
     * 订阅规则
     *
     * @return ""
     */
    String subscribe() default "";

    /**
     * 启动线程数
     *
     * @return 默认：1
     */
    int threadNum() default 1;

    /**
     * 每次拉取的消息数量
     *
     * @return 默认：200
     */
    int batchSize() default 200;

    /**
     * 拉取消息数量等待时间
     *  单位: 秒
     * @return 默认：1
     */
    int batchSizeTimeOut() default 1;
}
